package primary.array;

/**
 * @Author Elephas
 * @Date 2022/1/9
 **/
public class PlusOne {
    public static void main(String[] args) {
        final int[] TEST01 = new int[]{8,9,9,9};
        plusOne(TEST01);
    }
    /*
        直接末尾加一，考虑是否有进位，需要考虑当digit比较长时会不会发生溢出（int存储）。
        从末尾开始考虑，如果是9，则前一位，如果不是则+1
        如果下标越界，则发生进位，另外开一个数组
     */
    public static int[] plusOne(int[] digits){
        for (int i = digits.length-1; i >= 0; i--) {
            if(digits[i] != 9){
                digits[i]++;
                return digits;
            }else{
                digits[i] = 0;
            }
        }
        // 都是9，进位了
        int[] ans = new int[digits.length+1];
        ans[0] = 1;
        for (int i = 1; i < ans.length; i++) {
            ans[i] = 0;
        }
        return ans;
    }
}
